Developer | Nokia with help of University of Szeged |
---|---|
Full name | Unsorted Block Image File System |
Introduced | 2008 (Linux kernel 2.6.27) |
Structures | |
Directory contents | B+ trees |
Limits | |
Allowed characters in filenames | Any Unicode except NUL |
Features | |
Forks | Yes |
Attributes | Yes |
File system permissions | POSIX |
Supported operating systems | Linux |
The Unsorted Block Image File System (UBIFS) is a successor to JFFS2, and competitor to LogFS,[1] as a file system for use with raw flash memory media.[2] Development began in earnest in 2007, with the first stable release made to Linux kernel 2.6.27 in October 2008.[3]
Note that UBIFS works on top of an Unsorted Block Images device, which is itself on top of a MTD device. MTDs are not to be used directly.[4] Two major differences on UBIFS (compared to JFFS2) are that UBIFS supports write caching,[5] and UBIFS errs on the pessimistic side of free space calculation.[6] UBIFS tends to perform better than JFFS2 for large NAND FLASH devices.[7] This is a consequence of UBIFS design goals[8]: faster mounting, quicker access to large files, and improved write speeds. UBIFS also preserves or improves upon JFFS2's on-the-fly compression, recoverability and power fail tolerance.[8] UBIFS's on-the-fly data compression allows zlib (Deflate algorithm) or LZO.
JFFS2 stores files system indexes in memory whereas UBIFS stores indexes in flash.[9] This directly impacts the scalability of JFFS2 as the tables must be rebuilt every time the volume is mounted. Also, the JFFS2 tables may consume enough system RAM that some images may be unusable.
UBIFS is the default root filesystem of the Nokia N900 Smartphone.[10]
Unsorted Block Images (UBI) is an erase block management layer for flash memory devices. UBI serves two purposes, tracking NAND flash bad blocks and providing wear leveling. Wear leveling spreads the erases and writes across the entire flash device. UBI presents logical erase blocks to higher layers and maps these to physical flash erase blocks. UBI was written specifically for UbiFs so that it does not have to deal with wear leveling and bad blocks. However, UBI may also be useful with cramfs and NAND flash; cramfs is not aware of NAND flash bad blocks.